package com.loan.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.loan.entity.Contract;
import com.loan.entity.ContractAllInfo;
import com.loan.entity.Emp;
import com.loan.entity.User;
import com.loan.vo.ContractArray;
import com.loan.vo.ContractEmp;
import com.loan.vo.ContractVO;

import java.util.List;

public interface ContractService extends IService<Contract> {
    /**
     * 功能描述: <br>
     * 执行合同表信息的添加
     * @Param: [contract]
     * @Return: boolean
     * @Author: wYin
     * @Date: 2022/1/18 15:07
     */
    public boolean insert(Contract contract);

    /**
     * 功能描述: <br>
     * 根据
     * @Param: [contract]
     * @Return: java.util.List<com.loan.entity.Contract>
     * @Author: wYin
     * @Date: 2022/1/18 14:41
     */
    public List<Contract> getContracts(Contract contract);

    /**
     * 功能描述: <br>
     * 更新合同的信息
     * @Param: [contract]
     * @Return: boolean
     * @Author: wYin
     * @Date: 2022/1/18 15:08
     */
    public int updateContractInfo(Contract contract);


    /**
     * 功能描述: <br>
     * 执行更新合同表中放款状态--（使用Contract类接收操作的业务员id以及传入的合同编号）
     *  通过两者进行匹配判断
     * @Param: [contract]
     * @Return: boolean
     * @Author: wYin
     * @Date: 2022/1/18 18:42
     */
    public boolean updateContractLoan(Contract contract);

    /**
     * @Desc: 得到单一合同表级联所有信息
     * @Param: [contract] 接收客户id、合同编号、合同id、业务员id或客用户ID
     * @Return: com.loan.entity.ContractAllInfo
     * @Author: wYin
     * @Date: 2022/1/19 20:57
     */
    public Contract getSingleContract(ContractVO contractVO);

    /**
     * @Desc: 接收员工登录数据进行员工查询合同校验
     * @Param: [emp]
     * @Return: com.loan.entity.ContractAllInfo
     * @Author: wYin
     * @Date: 2022/1/20 11:30
     */
    public  List<Contract> getAllContractInfo(Emp emp);
    
    /**
     * @Desc: 用户查询合同信息
     * @Param: [user]
     * @Return: java.util.List<com.loan.entity.Contract>
     * @Author: wYin
     * @Date: 2022/1/20 12:02
     */
    public List<Contract> userGetContract(User user);

    /**
     * @Desc: 接收员工id和员工账户，查询合同中状态为n,未放款的的
     * @Param: [emp]
     * @Return: java.util.List<com.loan.entity.Contract>
     * @Author: wYin
     * @Date: 2022/1/22 10:32
     */
    public List<Contract> getLoanStatusIsN(ContractEmp conEmp);

    /**
     * @Desc: 批量更新合同放款
     * @Param: [contractArray]
     * @Return: java.lang.Integer[]
     * @Author: wYin
     * @Date: 2022/1/22 15:38
     */
    public Boolean batchUpdateLoan(List<ContractArray> contractArrays);
}
